ce3a69
@@ -750,15 +750,25 @@
public class MulticastProcessor extends ServiceSupport implements AsyncProcessor
 
         // cleanup any per exchange aggregation strategy
         removeAggregationStrategyFromExchange(original);
+
+        boolean stoppedOnException = false;
         if (original.getException() != null || subExchange != null && subExchange.getException() != null) {
+            // there was an exception and we stopped
+            stoppedOnException = isStopOnException();
             // multicast uses error handling on its output processors and they have tried to redeliver
             // so we shall signal back to the other error handlers that we are exhausted and they should not
             // also try to redeliver as we will then do that twice
             original.setProperty(Exchange.REDELIVERY_EXHAUSTED, exhaust);
         }
+
         if (subExchange != null) {
-            // and copy the current result to original so it will contain this result of this eip
-            ExchangeHelper.copyResults(original, subExchange);
+            if (stoppedOnException) {
+                // if we stopped due an exception then only propagte the exception
+                original.setException(subExchange.getException());
+            } else {
+                // copy the current result to original so it will contain this result of this eip
+                ExchangeHelper.copyResults(original, subExchange);
+            }
         }
         callback.done(doneSync);
     }
